package bean;

import java.io.IOException;
import java.io.Serializable;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

import controller.UserMgr;
import dto.ElementoBaseDTO;
import dto.UtenteDTO;

@ManagedBean
@ViewScoped
public class ProfiloBean implements Serializable {
	
	private static final long serialVersionUID = 1L;

	@EJB
	private UserMgr userMgr;

	private UtenteDTO utente;
	private String email;
	private ElementoBaseDTO selectedElemento;
	
	public void caricaUtente(String email){
		this.email = email;
		if(this.email!=null){
			this.utente = this.userMgr.getUtenteEmail(email);
			try{
				this.utente.getNome().length();
			}catch(Exception e){
				this.utente = new UtenteDTO();
				this.utente.setNome(": Nessun utente trovato");
			}
		}
		else{
			this.utente = new UtenteDTO();
			this.utente.setNome(": Nessun utente trovato");
		}
	}
	
	public UtenteDTO getUtente() {
		return this.userMgr.getUtenteEmail(email);
	}

	public ElementoBaseDTO getSelectedElemento() {
		return selectedElemento;
	}
	public void setSelectedElemento(ElementoBaseDTO selectedElemento) {
		this.selectedElemento = selectedElemento;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	
	public void update(){
	    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
	    try {
			ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public String redirect(){
		FacesContext facesContext = FacesContext.getCurrentInstance();  

			if(!email.equalsIgnoreCase(userMgr.getUtenteDTO().getEmail())){
			if(userMgr.getUtenteEmail(email)!=null)
			return "profiloUtente.xhtml?faces-redirect=true&amp;email="+this.email;
			else {
				facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Errore durante la ricerca", "Non è stato trovato nessun utente con la mail specificata"));
			return "";
			}
			}else{	    
		    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Errore durante la ricerca", "Non è possibile inserire la propria email"));
			return "";
			}
	}
	
}
